home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
Texteditors
/
XDME
/
Src
/
Key
/
KeyAddes.c
next >
Wrap
C/C++ Source or Header
|
1996-09-26
|
3KB
|
138 lines
/******************************************************************************
MODUL
keyaddes.c
DESCRIPTION
additional keyboard support commands, which do
not need keyhashes.c
NOTES
we only import keycodes.c
BUGS
TODO
(better) filtering commands
EXAMPLES
SEE ALSO
INDEX
HISTORY
16 Dec 1992 b_null created
******************************************************************************/
/**************************************
Includes
**************************************/
#define KEY_INTERNAL /* PATCH_NULL < 24-06-94 */
#include "defs.h"
extern BOOL a2iqual (const UBYTE *str, ULONG *piqual); /* keycodes.c */
/**************************************
Globale Variable
**************************************/
Prototype long ext_qualifiers;
Prototype int qualifier (char *);
/**************************************
Interne Defines & Strukturen
**************************************/
/**************************************
Interne Variable
**************************************/
long ext_qualifiers = 0;
/**************************************
Interne Prototypes
**************************************/
/*****************************************************************************
NAME
qualifier
PARAMETER
char * string
RESULT
success
RETURN
int
DESCRIPTION
manually set some (additional) qualifiers without
respect to the keyboard;
it is possible to set/add/remove/AND/XOR some quals
due to the 1st char of string
NOTES
make sure unused qualifiers do not disturb keycontrol.c
BUGS
using ^ may cause definition of nused qualifiers,
but that should really not cause errors
EXAMPLES
SEE ALSO
keycodes.c/a2iqual
INTERNALS
HISTORY
16 Dec 1992 b_null created
******************************************************************************/
int qualifier (char * string)
{
long newquals = 0;
char mode = 0;
if (!string) {
return (0);
} /* if */
switch (*string) {
case '+': mode = 1; string++; break; /* add some additional quals */
case '-': mode = 2; string++; break; /* remove some additional quals */
case '*': mode = 3; string++; break; /* AND some additional quals */
case '/': mode = 4; string++; break; /* XOR some additional quals */
default: mode = 0; break; /* overwrite the old quals */
} /* switch */
if (!a2iqual(string, &newquals)) {
return (0);
} /* if */
switch (mode) { /* see above */
case 0: ext_qualifiers = newquals; break;
case 1: ext_qualifiers |= newquals; break;
case 2: ext_qualifiers &= ~newquals; break;
case 3: ext_qualifiers &= newquals; break;
case 4: ext_qualifiers ^= newquals; break; /* highly dangerous: we may define unused bits */
} /* switch */
return (1);
} /* qualifier */
/******************************************************************************
***** ENDE keyaddes.c
******************************************************************************/